﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Windows.Markup;
using System.Collections;

using Prism.Games.GalEngine.Scripts.FunctionModel;
using Prism.Games.GalEngine.Scripts.Data;
using Prism.Games.GalEngine.Scripts.Data.SceneElements;
using Prism.Games.GalEngine.Scripts.Data.BranchSystem;
using Prism.Games.GalEngine.Scripts.Data.ResourceCollection;

namespace Prism.Games.GalEngine.Scripts
{
    /// <summary>
    /// 表示一个场景。
    /// </summary>
    [Serializable]
    public abstract class Scene : SectionObject, IScene, IReaderLogable, ISectionBased, IItemIncrementalMarkableHost, IAnimable
    {
        /// <summary>
        /// 初始化一个新的场景。
        /// </summary>
        protected Scene(IItemIncrementalMarkable host)
        {
            this.Host = host;
        }

        public bool IsRead
        {
            get;
            set;
        }

        private int sectionId;
        public int SectionId
        {
            get { return sectionId; }
            set { sectionId = value; this.OnPropertyChanged("SectionId"); }
        }

        public IItemIncrementalMarkable Host
        {
            get;
            set;
        }

        public Data.Effect.Effect EnterEffect
        {
            get;
            set;
        }

        public Data.Effect.Effect LeaveEffect
        {
            get;
            set;
        }
    }
}
